package com.ruicar.afs.cloud.basic.common.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruicar.afs.cloud.common.core.entity.BaseEntity;
import com.ruicar.afs.cloud.common.modules.contract.enums.ReceiptSourceTypeEnum;
import com.ruicar.afs.cloud.common.modules.contract.enums.ReceiptStatusEnum;
import com.ruicar.afs.cloud.common.modules.contract.enums.WriteTargetTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author: Lee
 * @date 2020-05-29 09:31:34 
 * @description 收据表
 */
@Data
@Accessors(chain = true)
@TableName(value ="basic_receipt_record", autoResultMap = true)
public class BasicReceiptRecord extends BaseEntity<BasicReceiptRecord> {

	/** 虚拟账户id */
	@ApiModelProperty("虚拟账户id")
	private Long accountId;
	/** 合同号码 */
	private String contractNo ;
	/** 收款来源类型 枚举值：对公结算，微信还款，银行代扣 */
	@ApiModelProperty("收款来源类型 枚举值：对公结算，微信还款，银行代扣")
	private ReceiptSourceTypeEnum sourceType;
	/** 收款核销目的 枚举值：正常核销，提前还款核销 */
	@ApiModelProperty("收款核销目的 枚举值：正常核销，提前还款核销")
	private WriteTargetTypeEnum writeTarget;
	/** 收款来源表 */
	@ApiModelProperty("收款来源表 ")
	private String sourceTable;
	/** 收款来源id */
	@ApiModelProperty("收款来源id")
	private Long sourceId;
	/** 收款金额 不可为负数 */
	@ApiModelProperty("收款金额 不可为负数")
	private BigDecimal arriveAmt;
	/** 已分配金额 不可为负数 */
	@ApiModelProperty("已分配金额 不可为负数")
	private BigDecimal usedAmt;
	/** 未分配金额 不可为负数 */
	@ApiModelProperty("未分配金额 不可为负数")
	private BigDecimal unusedAmt;
	/** 溢缴款金额 */
	@ApiModelProperty("溢缴款金额")
	private BigDecimal overpaymentAmount;
	/** 收款来源客户姓名 */
	@ApiModelProperty("收款来源客户姓名")
	private String sourceAccountName;
	/** 收款来源账号 */
	@ApiModelProperty("收款来源账号")
	private String sourceAccount;
	/** 扣款入账银行账号 */
	@ApiModelProperty("扣款入账银行账号")
	private String creditAccount ;
	/** 扣款入账银行名称 */
	@ApiModelProperty("扣款入账银行名称")
	private String creditBankName;
	/** 扣款入账银行名称（分支行） */
	@ApiModelProperty("扣款入账银行名称（分支行）")
	private String creditOpeningBankName;
	/** 客户编号 */
	@ApiModelProperty("客户编号")
	private String custNo;
	/** 收据状态 枚举值：收款成功，撤销审核中，已撤销 */
	@ApiModelProperty("收据状态 枚举值：收款成功，撤销审核中，已撤销")
	private ReceiptStatusEnum receiptStatus;
	/** 收款成功时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("收款成功时间")
	private Date succeedTime;
	/** 撤销发起时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("撤销发起时间")
	private Date undoStartTime;
	/** 撤销审核时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("撤销审核时间")
	private Date undoEndTime;
	@ApiModelProperty("未分配金额是否预缴款")
	private String isPrepay;
	@ApiModelProperty("表外金额")
	private BigDecimal outerAmt;
	@ApiModelProperty("特须表外金额")
	private BigDecimal specialOuterAmt;
	@ApiModelProperty("案件号")
	private String caseNo;
	/** 乐观锁 */
	@ApiModelProperty("乐观锁")
	private Long revision;

}
